import
android.app.Activity;
import
android.content.Context;
import
android.graphics.Canvas;
import
android.graphics.Color;
import
android.graphics.DashPathEffect;
import
android.graphics.Paint;
import
android.graphics.Rect;
import
android.os.Bundle;
import
android.view.View;
import
android.view.Window;
public
class
Graphic2D
extends
Activity {
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(
new
ShowView(
this
));
}
class
ShowView
extends
View {
public
ShowView(Context context){
super
(context);
}
@Override
protected
void
onDraw(Canvas canvas) {
super
.onDraw(canvas);
int
x =
0
;
int
y =
0
;
Paint paint =
new
Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
canvas.drawPaint(paint);
paint.setColor(Color.BLUE);
canvas.drawCircle(
40
,
40
,
30
, paint);
paint.setAntiAlias(
true
);
paint.setColor(Color.BLUE);
canvas.drawCircle(
110
,
40
,
30
, paint);
paint.setAntiAlias(
false
);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(
1
);
paint.setColor(Color.MAGENTA);
paint.setTextSize(
30
);
canvas.drawText(
"Style.STROKE"
,
75
,
110
, paint);
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(
true
);
paint.setTextSize(
30
);
canvas.drawText(
"Style.FILL"
,
75
,
150
, paint);
x =
75
;
y =
220
;
paint.setColor(Color.GRAY);
paint.setTextSize(
25
);
/** 글자외부를 싸고 위치값을 재조정한다. */
String strState =
"!Rotated"
;
Rect rect =
new
Rect();
paint.getTextBounds(strState,
0
, strState.length(), rect);
canvas.translate(x, y);
paint.setStyle(Paint.Style.FILL);
canvas.drawText(strState,
0
,
0
, paint);
/** 위치값을 원래대로 돌리고 글자를 회전한다. */
String strRotated =
"Rotated!"
;
paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(rect, paint);
canvas.translate(-x, -y);
canvas.rotate(-
45
, x + rect.exactCenterX(),
y + rect.exactCenterY());
paint.setStyle(Paint.Style.FILL);
canvas.drawText(strRotated, x, y, paint);
canvas.restore();
canvas.drawText(
"After canvas.restore()"
,
50
,
300
, paint);
DashPathEffect dashPath =
new
DashPathEffect(
new
float
[]{
20
,
3
},
1
);
paint.setPathEffect(dashPath);
paint.setStrokeWidth(
8
);
canvas.drawLine(
0
,
350
,
320
,
350
, paint);
}
}
}